home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / asm / demos / sinescroll_2 / sine.s < prev   
Text File  |  1980-01-03  |  14KB  |  598 lines

  1. ;==========================================================================
  2. ; Program Name    : Sine Scroller    { Not-Optimized }
  3. ; Coded by    : Del/Mayhem
  4. ; Date        : 1989
  5. ; Licence    : Freeware
  6. ;
  7. ; AGA Fixed     : Demo Fixed By Digital Candy, 1996,
  8. ;        : All Absolute Address referencing fixed, AGA patches
  9. ;        : fixed... Tested on 50MhZ A1200/030 (AGA), now works
  10. ;        : correctly from any chip memory region..
  11. ;==========================================================================
  12. *-------------- Try changing the following 5 equates for cool effects
  13.  
  14. speed        =    1        ;Scrolly speed (1,2,4 or 8)
  15. yspace1        =    4        ;Sine spacing (Max 512)
  16. yspeed1        =    8        ;Sine wibble speed (max 512)
  17. sinesize    =    220        ;Depth of sinescroller (max 220)
  18. stoptime    =    4        ;How many seconds scrolly pauses for!
  19.  
  20. *--------------
  21.  
  22. blitwait    macro
  23. .bw\@        btst #6,2(a6)        ;Blitwait macro...
  24.         bne.s .bw\@        ;Wait for blitter to stop
  25.         endm
  26.  
  27.     Section del,code_c        ;Put everything into chip memory!
  28.  
  29. Start    lea variables(pc),a5    ;Variables pointer in A5
  30.     lea custom,a6        ;Custom chip pointer in A6
  31.  
  32.     bsr trash            ;Trash the operating system
  33.     bsr intcustom        ;Init Screen size,modulos etc.
  34.     bsr intbuffer        ;Init double buffer!
  35.     bsr makecop        ;Make the copper list
  36.     bsr initsine        ;Init sinetable!
  37.  
  38.     lea wherecop(pc),a0
  39.     move.l a0,cop1lc(a6)    ;Tell system where copper is...
  40.     move.w copjmp1(a6),d0    ;And start it
  41.     move.w #$87e0,dmacon(a6)    ;Enable Dma.
  42.     move.w #$20,intreq(a6)    ;Clear VBI IRQ bit.
  43.  
  44.    ***********************
  45.    ****** Main loop ******
  46.    ***********************
  47.  
  48. .button    lea custom,a6
  49.     btst #5,intreqr+1(a6)    ;VBI interrupt?
  50.     beq.s .button
  51.     move.w #$20,intreq(a6)    ;Clear VBI IRQ bit.
  52.  
  53.     bsr cls            ;Clear screen!
  54.     bsr dosine        ;Do sine movement!
  55.     blitwait            ;Wait for blitter to stop clearing screen!
  56.     bsr scroll        ;Scroll message!
  57.     bsr blitsine        ;Blit scrolly onto screen
  58.     bsr doublebuffer        ;Double buffer the screen
  59.  
  60.     btst #6,$bfe001        ;Is left mouse button pressed?
  61.     bne.s .button
  62.  
  63.      bsr.s untrash        ;Bring back operating system
  64.     moveq #0,d0        ;Stop a return error!
  65.     rts
  66.     
  67. trash    bset #1,$bfe001        ;Turn power light off
  68.     move.l $4.w,a6
  69.     lea gfxname(pc),a1
  70.     moveq #0,d0
  71.     jsr -552(a6)        ;Open graphics library
  72.     move.l d0,a0
  73.     move.l 38(a0),syscop(a5)    ;Store old system copper address!
  74.  
  75.     lea custom,a6
  76.     move.w intenar(a6),d0    ;Get system IRQ register
  77.     or.w #$8000,d0        ;Set top bit (For enable)
  78.     move.w d0,IRQ(a5)        ;Store it
  79.     move.w dmaconr(A6),d0    ;Get system DMA register
  80.     or.w #$8000,d0        ;Set top bit (For enable)
  81.     move.w d0,DMA(a5)        ;Store it
  82.  
  83.     move.w #$7fff,intena(a6)    ;All irq off
  84.     move.w #$7fff,dmacon(A6)    ;All dma off
  85.     rts
  86.  
  87. untrash    lea custom,a6
  88.     lea variables(pc),a5
  89.  
  90.     move.w #$7fff,$96(a6)    ;Kill DMA
  91.     move.w #$7fff,$9a(a6)    ;Kill IRQ
  92.     move.w DMA(a5),dmacon(A6)    ;Restore system DMA
  93.     move.w IRQ(a5),intena(a6)    ;Restore system IRQ
  94.     move.w #$7fff,intreq(a6)
  95.     clr.w aud0vol(a6)
  96.     clr.w aud1vol(a6)
  97.     clr.w aud2vol(a6)
  98.     clr.w aud3vol(a6)        ;Clear volume registers
  99.  
  100.     move.l syscop(a5),d0    ;Get old system copper address
  101.     move.l d0,cop1lc(a6)    ;And restore it!
  102.     move.l $4.w,a6
  103.     lea intname(pc),a1
  104.     moveq #0,d0
  105.     jsr -552(a6)
  106.     move.l d0,a6
  107.     jsr -390(a6)
  108.     bclr #1,$bfe001        ;Power light back on
  109.     rts
  110.  
  111. setmulti    move.w d7,(a0)+        ;Copper 32 bit write
  112.     swap d0
  113.     move.w d0,(a0)+
  114.     swap d0
  115.     addq.w #2,d7
  116.     move.w d7,(a0)+
  117.     move.w d0,(a0)+
  118.     addq.w #2,d7
  119.     add.l d5,d0
  120.     dbra d6,setmulti
  121.     rts
  122.  
  123. intcustom    clr.w bplcon1(a6)        ;Scroll value
  124.     clr.w bplcon2(a6)        ;Priorities
  125.     clr.w bpl1mod(a6)        ;Modulo A
  126.     clr.w bpl2mod(a6)        ;Modulo B
  127.     move.w #$0038,ddfstrt(a6)    ;Data fetch start
  128.     move.w #$00d0,ddfstop(a6)    ;Data fetch stop
  129.     move.w #$2c81,diwstrt(a6)    ;Window start
  130.     move.w #$2cc1,diwstop(a6)    ;Window stop
  131.     rts
  132.  
  133. makecop    lea wherecop(pc),a0        ;Copperlist address
  134.     
  135.     lea wherespr(pc),a1        ;First do sprites..
  136.     move.l a1,d0
  137.     moveq #7,d6        ;8 sprites
  138.     move.w #$120,d7        ;1st register no.
  139.     moveq #16,d5        ;16 bytes per sprite!
  140.     bsr setmulti
  141.  
  142.     move.l a0,changecop(a5)    ;Store copper address (For double buffer!)
  143.     move.l logbase(a5),d0    ;Bitmap address
  144.     moveq #1-1,d6        ;1 plane
  145.     move.w #$e0,d7        ;1st register no.
  146.     moveq #0,d5        ;Plane length
  147.     bsr setmulti
  148.  
  149.     move.l #$01001200,(a0)+    ;Set 1 bitplane
  150.     move.l #$01800000,(a0)+    ;Colour 0
  151.     move.l #$01820fff,(a0)+    ;Colour 1
  152.     move.l #$01FC0000,(a0)+    ;fetch mode
  153.     move.l #$01060000,(a0)+    ;fetch mode
  154.     
  155.     moveq #-2,d0
  156.     move.l d0,(a0)+        ;Wait for the impossible (END!)
  157.     rts
  158.  
  159.  ************************************
  160.  *********** END OF SETUP ***********
  161.  ************************************
  162.  
  163. intbuffer    move.l bitmap1_ptr,logbase(a5)    ;Init doublebuffer screen 1
  164.     move.l bitmap2_ptr,physbase(a5)    ;Init doublebuffer screen 2
  165.     rts
  166.  
  167. doublebuffer
  168.     move.l logbase(a5),d0
  169.     move.l physbase(a5),logbase(a5)
  170.     move.l d0,physbase(a5)
  171.  
  172.     move.l changecop(a5),a0        ;Update copper!
  173.     moveq #0,d6
  174.     move.w #$e0,d7
  175.     moveq #0,d5
  176.     bsr setmulti
  177.     rts
  178.  
  179. cls    moveq #-1,d0
  180.     move.l d0,bltafwm(a6)        ;First and last word mask
  181.     clr.w bltcon1(a6)            ;No special modes
  182.     clr.w bltdmod(a6)            ;D modulo
  183.     move.w #%0000000100000000,bltcon0(a6)     ;No minterm just enable d!    
  184.  
  185.     move.l logbase(a5),bltdpt(A6)        ;Destination
  186.     move.w #(256<<6)!20,bltsize(a6)    ;256 high by 20 words wide
  187.     rts
  188.  
  189. scroll    tst.w stop(a5)
  190.     ble.s .ok
  191.     subq.w #1,stop(a5)
  192.     rts
  193.  
  194. .ok    bsr blitshift
  195.     subq.w #speed,scrcount(a5)
  196.     ble.s .gog
  197.     rts
  198. .gog    move.w #16,scrcount(a5)        ;Reset counter!
  199.  
  200.     lea text(pc),a2
  201.     move.w messcount(a5),d0        ;Message count
  202. .again    moveq #0,d1
  203.     move.b (a2,d0.w),d1            ;Get char
  204.     bne.s .dlf
  205.     clr.w messcount(a5)
  206.     move.w messcount(a5),d0
  207.     bra.s .again            ;Wrap at a zero
  208.  
  209. .dlf    cmp.w #$ff,d1
  210.     bne.s .nstop
  211.     move.w #stoptime*50,stop(a5)        ;Trigger stop    
  212.     moveq #32,d1
  213.  
  214. .nstop    addq.w #1,messcount(a5)        ;Update scroll offset
  215.     lea scrarea+82,a0
  216.     lea font,a1
  217.  
  218.     sub.w #32,d1            ;Ascii conversion!
  219. .go    cmp.w #20,d1
  220.     blt.s .nnl            ;Next line of chars?
  221.     lea 40*16(a1),a1            ;Move down a line!
  222.     sub.w #20,d1
  223.     bra.s .go
  224. .nnl    add.w d1,d1
  225.     add.w d1,a1            ;Get to char 
  226.  
  227.     moveq #15,d0
  228. .xloop    move.w (a1),(a0)            ;Plot char!
  229.     add.w #42,a0
  230.     add.w #40,a1
  231.     dbra d0,.xloop            ;Loop for 16 high
  232.     rts
  233.  
  234. blitshift    moveq #-1,d0
  235.     move.l d0,bltafwm(a6)
  236.     clr.w bltamod(a6)
  237.     clr.w bltdmod(a6)
  238.     clr.w bltcon1(a6)
  239.  
  240.     move.w #%0000100100000000!$f0,d0
  241.     moveq #speed,d1
  242.     neg.w d1
  243.     moveq #12,d2
  244.     lsl.w d2,d1            ;Work out speed (shift!)
  245.     or.w d1,d0
  246.     move.w d0,bltcon0(a6)        ;D=A Minterm
  247.  
  248.     move.l #scrarea,d0
  249.     move.l d0,bltdpt(A6)        ;Destination
  250.     addq.l #2,d0
  251.     move.l d0,bltapt(a6)        ;Source
  252.  
  253.     move.w #(17<<6)!20,bltsize(a6)
  254.     blitwait
  255.     rts
  256.  
  257. blitsine    clr.w bltcon1(a6)
  258.     move.w #42-2,bltamod(a6)
  259.     move.w #40-2,bltdmod(a6)
  260.     move.w #40-2,bltbmod(a6)
  261.  
  262.     move.l logbase(a5),d0
  263.     move.l d0,bltbpt(a6)        ;Init destination pointers!
  264.     move.l d0,bltdpt(a6)
  265.  
  266.     lea masklook(pc),a0
  267.     lea scrpos(pc),a1
  268.     move.l #scrarea+42,a2
  269.     move.l a2,bltapt(a6)        ;Init source pointer!
  270.     lea bltafwm(a6),a3
  271.     lea bltsize(a6),a4
  272.     move.l a7,stacksave(a5)        ;Save stack!
  273.     lea bltdpt+2(a6),a7
  274.     lea bltapt+2(a6),a5
  275.  
  276.     moveq #20-1,d7            ;20 words
  277.     move.w #(16<<6)!1,d6
  278.     move.w #%0000100100000000!$f0,d5
  279.     move.w #%0000110100000000!$fc,d4
  280.  
  281. .loop    move.w d5,bltcon0(a6)         ;D=A
  282.     move.w (a0)+,(a3)            ;First word mask
  283.     move.w a2,(a5)            ;Source
  284.     move.w (a1)+,(a7)            ;Destination
  285.     move.w d6,(a4)            ;Blitsize
  286.     blitwait
  287.  
  288.     move.w d4,bltcon0(a6)         ;D=A+B
  289.     rept 15
  290.     move.w (a0)+,(a3)            ;First word mask
  291.     move.w a2,(a5)            ;Source
  292.     move.w (a1),bltbpt+2(a6)        ;Destination
  293.     move.w (a1)+,(a7)            ;Destination
  294.     move.w d6,(a4)            ;Blitsize
  295.     blitwait
  296.     endr
  297.  
  298.     addq.w #2,a2            ;Next word along!
  299.     dbra d7,.loop
  300.  
  301.     lea variables(pc),a5
  302.     move.l stacksave(a5),sp
  303.     rts    
  304.  
  305. initsine    lea originalsine(pc),a0
  306.     move.w #511,d0
  307. .loop1    sub.w #128,(a0)+            ;Init original sine
  308.     dbra d0,.loop1
  309.  
  310.     lea originalsine(pc),a0
  311.     lea sine1(pc),a1
  312.     move.w #511,d0
  313. .loop2    move.w (a0)+,d1
  314.     muls.w #sinesize,d1            ;Size!
  315.     asr.w #8,d1
  316.     add.w #sinesize/2,d1
  317.     mulu.w #40,d1            ;Multiple of 40!
  318.     move.w d1,(a1)+            ;Make sinetable!
  319.     dbra d0,.loop2
  320.     rts
  321.  
  322. dosine    lea sine1(pc),a0
  323.     lea scrpos(pc),a1
  324.     move.l logbase(a5),a3
  325.     moveq #20-1,d7            ;20 words wide!
  326.     move.w sinestart1(a5),d0
  327.     move.w #1022,d3
  328.     move.w #yspace1,d4
  329. .loop    
  330.     rept 16
  331.     and.w d3,d0
  332.     move.w (a0,d0.w),d2
  333.     lea (a3,d2.w),a2            ;Add offset 1
  334.     add.w d4,d0            ;Spacing 1
  335.     move.w a2,(a1)+            ;Scroll position!
  336.     endr
  337.  
  338.     addq.w #2,a3            ;Next word along!
  339.     dbra d7,.loop
  340.     sub.w #yspeed1,sinestart1(a5)
  341.     rts
  342.  
  343. intname    dc.b "intuition.library",0
  344. gfxname    dc.b "graphics.library",0
  345.     even
  346.  
  347. text    DC.B " THIS SINE SCROLLER WAS CODED BY DEL. "
  348.     DC.B "   IT ISN'T VERY OPTIMIZED BUT WHO CARES?    "
  349.     DC.B "  TRY CHANGING THE EQUATES AT THE TOP OF THE CODE"
  350.     DC.B " FOR DIFFERENT EFFECTS!!!           "
  351.     DC.B "....... DEL! .......",$FF
  352.     DC.B "                    ",0
  353.     even
  354.  
  355. originalsine
  356.     DC.w 128,129,131,132,134,135,137,138,140,142,143,145,146,148,149
  357.     DC.w 151,152,154,156,157,159,160,162,163,165,166,168,169,171,172
  358.     DC.w 174,175,176,178,179,181,182,184,185,186,188,189,191,192,193
  359.     DC.w 195,196,197,199,200,201,202,204,205,206,207,209,210,211,212
  360.     DC.w 213,215,216,217,218,219,220,221,222,223,224,225,226,227,228
  361.     DC.w 229,230,231,232,233,234,235,236,236,237,238,239,240,240,241
  362.     DC.w 242,243,243,244,245,245,246,246,247,247,248,249,249,250,250
  363.     DC.w 250,251,251,252,252,252,253,253,253,254,254,254,254,255,255
  364.     DC.w 255,255,255,255,255,255,255,255,256,255,255,255,255,255,255
  365.     DC.w 255,255,255,255,254,254,254,254,253,253,253,252,252,252,251
  366.     DC.w 251,250,250,250,249,249,248,247,247,246,246,245,245,244,243
  367.     DC.w 243,242,241,240,240,239,238,237,236,236,235,234,233,232,231
  368.     DC.w 230,229,228,227,226,225,224,223,222,221,220,219,218,217,216
  369.     DC.w 215,213,212,211,210,209,207,206,205,204,202,201,200,199,197
  370.     DC.w 196,195,193,192,191,189,188,186,185,184,182,181,179,178,176
  371.     DC.w 175,174,172,171,169,168,166,165,163,162,160,159,157,156,154
  372.     DC.w 152,151,149,148,146,145,143,142,140,138,137,135,134,132,131
  373.     DC.w 129,127,126,124,123,121,120,118,117,115,113,112,110,109,107
  374.     DC.w 106,104,103,101,99,98,96,95,93,92,90,89,87,86,84
  375.     DC.w 83,81,80,79,77,76,74,73,71,70,69,67,66,64,63
  376.     DC.w 62,60,59,58,56,55,54,53,51,50,49,48,46,45,44
  377.     DC.w 43,42,40,39,38,37,36,35,34,33,32,31,30,29,28
  378.     DC.w 27,26,25,24,23,22,21,20,19,19,18,17,16,15,15
  379.     DC.w 14,13,12,12,11,10,10,9,9,8,8,7,6,6,5
  380.     DC.w 5,5,4,4,3,3,3,2,2,2,1,1,1,1,0
  381.     DC.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  382.     DC.w 0,0,0,0,0,1,1,1,1,2,2,2,3,3,3
  383.     DC.w 4,4,5,5,5,6,6,7,8,8,9,9,10,10,11
  384.     DC.w 12,12,13,14,15,15,16,17,18,19,19,20,21,22,23
  385.     DC.w 24,25,26,27,28,29,30,31,32,33,34,35,36,37,38
  386.     DC.w 39,40,42,43,44,45,46,48,49,50,51,53,54,55,56
  387.     DC.w 58,59,60,62,63,64,66,67,69,70,71,73,74,76,77
  388.     DC.w 79,80,81,83,84,86,87,89,90,92,93,95,96,98,99
  389.     DC.w 101,103,104,106,107,109,110,112,113,115,117,118,120,121,123
  390.     DC.w 124,126
  391.  
  392. sine1    ds.w 512
  393.  
  394. masklook    
  395.     rept 20
  396.     dc.w %1000000000000000
  397.     dc.w %0100000000000000
  398.     dc.w %0010000000000000
  399.     dc.w %0001000000000000
  400.     dc.w %0000100000000000
  401.     dc.w %0000010000000000
  402.     dc.w %0000001000000000
  403.     dc.w %0000000100000000
  404.     dc.w %0000000010000000
  405.     dc.w %0000000001000000
  406.     dc.w %0000000000100000
  407.     dc.w %0000000000010000
  408.     dc.w %0000000000001000
  409.     dc.w %0000000000000100
  410.     dc.w %0000000000000010
  411.     dc.w %0000000000000001
  412.     endr
  413.  
  414. bitmap1_ptr:    dc.l    ymem1
  415. bitmap2_ptr:    dc.l    ymem2
  416.  
  417. shftlook    dc.w $09f0,$19f0,$29f0,$39f0,$49f0,$59f0,$69f0,$79f0
  418.     dc.w $89f0,$99f0,$a9f0,$b9f0,$c9f0,$d9f0,$e9f0,$f9f0
  419.  
  420. scrpos    ds.w 320
  421.  
  422.     rsreset
  423. syscop    rs.l 1
  424. irq    rs.w 1
  425. dma    rs.w 1
  426. physbase    rs.l 1
  427. logbase    rs.l 1
  428. changecop    rs.l 1
  429. scrcount    rs.w 1
  430. stop    rs.w 1
  431. messcount    rs.w 1
  432.  
  433. sinestart1 rs.w 1
  434. stacksave    rs.l 1
  435.  
  436. varisize    rs.w 0
  437. Variables    dcb.b varisize,0
  438.  
  439. wherespr    dcb.b 16*8,0    ;128 bytes for hardware sprites
  440. wherecop     dcb.b 2000,0    ;2k for copper list
  441.  
  442.     section bud,data_c
  443. font    incbin scene1:coding/asm/demos_sinescroll_2/font.raw
  444.  
  445.         section cake,bss_C
  446.  
  447. scrarea        ds.b 42*20
  448. ymem1:        ds.b    $2800
  449. ymem2:        ds.b    $2800
  450.  
  451.    *** Equates and data below! ***
  452.  
  453. custom     EQU $dff000
  454. bltddat    EQU $000
  455. dmaconr    EQU $002
  456. vposr    EQU $004
  457. vhposr    EQU $006
  458. dskdatr    EQU $008
  459. joy0dat    EQU $00A
  460. joy1dat    EQU $00C
  461. clxdat    EQU $00E
  462. adkconr    EQU $010
  463. pot0dat    EQU $012
  464. pot1dat    EQU $014
  465. potinp    EQU $016
  466. serdatr    EQU $018
  467. dskbytr    EQU $01A
  468. intenar    EQU $01C
  469. intreqr    EQU $01E
  470. dskpt    EQU $020
  471. dsklen    EQU $024
  472. dskdat    EQU $026
  473. refptr    EQU $028
  474. vposw    EQU $02A
  475. vhposw    EQU $02C
  476. copcon    EQU $02E
  477. serdat    EQU $030
  478. serper    EQU $032
  479. potgo    EQU $034
  480. joytest    EQU $036
  481. strEQU    EQU $038
  482. strvbl    EQU $03A
  483. strhor    EQU $03C
  484. strlong    EQU $03E
  485. bltcon0    EQU $040
  486. bltcon1    EQU $042
  487. bltafwm    EQU $044
  488. bltalwm    EQU $046
  489. bltcpt    EQU $048
  490. bltbpt    EQU $04C
  491. bltapt    EQU $050
  492. bltdpt    EQU $054
  493. bltsize    EQU $058
  494. bltcmod    EQU $060
  495. bltbmod    EQU $062
  496. bltamod    EQU $064
  497. bltdmod    EQU $066
  498. bltcdat    EQU $070
  499. bltbdat    EQU $072
  500. bltadat    EQU $074
  501. dsksync    EQU $07E
  502. cop1lc    EQU $080
  503. cop2lc    EQU $084
  504. copjmp1    EQU $088
  505. copjmp2    EQU $08A
  506. copins    EQU $08C
  507. diwstrt    EQU $08E
  508. diwstop    EQU $090
  509. ddfstrt    EQU $092
  510. ddfstop    EQU $094
  511. dmacon    EQU $096
  512. clxcon    EQU $098
  513. intena    EQU $09A
  514. intreq    EQU $09C
  515. adkcon    EQU $09E
  516. aud0lc    EQU $0A0
  517. aud1lc    EQU $0b0
  518. aud2lc    EQU $0c0
  519. aud3lc    EQU $0d0
  520. aud0len    EQU $a4
  521. aud1len    EQU $b4
  522. aud2len    EQU $c4
  523. aud3len    EQU $d4
  524. aud0per    EQU $a6
  525. aud1per    EQU $b6
  526. aud2per    EQU $c6
  527. aud3per    EQU $d6
  528. aud0vol    EQU $a8
  529. aud1vol    EQU $b8
  530. aud2vol    EQU $c8
  531. aud3vol    EQU $d8
  532. aud0dat    EQU $aa
  533. aud1dat    EQU $ba
  534. aud2dat    EQU $ca
  535. aud3dat    EQU $da
  536. bpl1pth    EQU $0E0
  537. bpl2pth    EQU $0E4
  538. bpl3pth    EQU $0E8
  539. bpl4pth    EQU $0EC
  540. bpl5pth    EQU $0F0
  541. bpl6pth    EQU $0F4
  542. bplcon0    EQU $100
  543. bplcon1    EQU $102
  544. bplcon2    EQU $104
  545. bpl1mod    EQU $108
  546. bpl2mod    EQU $10A
  547. bpldat    EQU $110
  548. sprpt    EQU $120
  549. spr    EQU $140
  550. sd_pos    EQU $00
  551. sd_ctl    EQU $02
  552. sd_dataa     EQU $04
  553. sd_datab     EQU $08
  554. color00    EQU $180
  555. color01     EQU $182
  556. color02     EQU $184
  557. color03    EQU $186
  558. color04    EQU $188
  559. color05    EQU $18a
  560. color06    EQU $18c
  561. color07    EQU $18e
  562. color08    EQU $190
  563. color09    EQU $192
  564. color10    EQU $194
  565. color11    EQU $196
  566. color12    EQU $198
  567. color13    EQU $19a
  568. color14    EQU $19c
  569. color15    EQU $19e
  570. color16    EQU $1a0
  571. color17    EQU $1a2
  572. color18    EQU $1a4
  573. color19    EQU $1a6
  574. color20    EQU $1a8
  575. color21    EQU $1aa
  576. color22    EQU $1ac
  577. color23    EQU $1ae
  578. color24     EQU $1b0
  579. color25    EQU $1b2
  580. color26    EQU $1b4
  581. color27    EQU $1b6
  582. color28    EQU $1b8
  583. color29    EQU $1ba
  584. color30    EQU $1bc
  585. color31    EQU $1be
  586. diskreg    EQU $bfd100
  587. keydat    EQU $bfec01
  588. keyint    EQU $bfed01
  589. ctrla    EQU $bfee01
  590. ctrlb    EQU $bfef01
  591. ciatl    EQU $bfe401
  592. ciath    EQU $bfe501
  593. cia_a    EQU $bfe001        ;disk input bits
  594. cia_b    EQU $bfd100        ;disk output bits
  595.  
  596.